package com.zzt.video.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzt.video.model.dto.RankListDto;
import com.zzt.video.model.dto.SeriesSearchParam;
import com.zzt.video.model.dto.SeriesShowDto;
import com.zzt.video.model.entity.Series;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

public interface SeriesService {
    Page<Series> getSeriesByKeywordWithPagination(SeriesSearchParam param);

    SeriesShowDto getSeries(Long id);

    void watchSeries(HttpServletRequest request, Long seriesId);

    /**
     * 根据type查询最新的N条记录
     * @param type 类型值(1,2,3,4)
     * @param limit 数量限制
     * @return 最新的Series列表
     */
    List<Series> getLatestSeriesByType(int type, int limit);

    /**
     * 根据type随机查询N条记录（高性能版本）
     * @param type 类型值(1,2,3,4)
     * @param limit 数量限制
     * @return 随机的Series列表
     */
    List<Series> getRandomSeriesByType(int type, int limit);

    /**
     * 获取指定类型的日观看排行榜
     * @param type 类型
     * @param limit 限制数量
     * @return 排行榜列表
     */
    List<RankListDto> getDailyViewRankByType(int type, int limit);

    /**
     * 获取指定类型的周观看排行榜
     * @param type 类型
     * @param limit 限制数量
     * @return 排行榜列表
     */
    List<RankListDto> getWeeklyViewRankByType(int type, int limit);

}
